importPackage(Packages.de.elo.ix.client);
//@include lib_Class.js
//@include lib_sol.common.AclUtils.js
//@include lib_sol.common.ix.FunctionBase.js
var logger = sol.create("sol.Logger", { scope: "sol.common.ix.functions.RestoreAcl" });
/**
* Restore ACL from whole folder structure.
*
* The ACL will be restored from a map field. The ACL can e.g. be saved to a map field by the {@link sol.common.ix.functions.RemoveAcl RemoveAcl} function.
*
* # As workflow node
*
* ObjId is set based on the element that the workflow is attached to.
* Following configuration has to be applied to the comments field.
*
* {
* "mapKey": "REMOVED_ACL",
* "recursive": true
* }
*
* The recursive flag is optional and the default will be `false`.
*
* # As IX function call
*
* sol.common.IxUtils.execute("RF_sol_function_RestoreAcl", {
* objId: "4711",
* mapKey: "REMOVED_ACL"
* });
*
* @author JHR, ELO Digital Office GmbH
* @version 1.03.000
*
* @eloix
* @requires sol.common.JsonUtils
* @requires sol.common.RepoUtils
* @requires sol.common.AclUtils
* @requires sol.common.WfUtils
* @requires sol.common.ix.RfUtils
* @requires sol.common.ix.FunctionBase
*
*/
sol.define("sol.common.ix.functions.RestoreAcl", {
extend: "sol.common.ix.FunctionBase",
requiredConfig: ["objId", "mapKey"],
/**
* @cfg {String} objId (required)
* ObjectId of folder structure
*/
/**
* @cfg {String} mapKey (required)
* Name of Mapfield which contains the ACL string
*/
/** @cfg {Boolean} [recursive=false] (optional) */
initialize: function (config) {
var me = this;
me.$super("sol.common.ix.FunctionBase", "initialize", [config]);
me.recursive = config.recursive || false;
},
/**
* Restores the ACL to whole folder structure.
*/
process: function () {
var me = this;
sol.common.AclUtils.restoreRights(me.objId, { recursive: me.recursive, asAdmin: me.asAdmin, storeAcl: { type: "MAP", key: me.mapKey } });
}
});
/**
* @member sol.common.ix.functions.RestoreAcl
* @static
* @inheritdoc sol.common.ix.FunctionBase#onEnterNode
*/
function onEnterNode(clInfo, userId, wFDiagram, nodeId) {
var params, module;
logger.enter("onEnterNode_RestoreAcl", { flowId: wFDiagram.id, nodeId: nodeId });
params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId, "mapKey");
params.objId = wFDiagram.objId;
if (params.asAdmin) {
sol.common.WfUtils.checkMainAdminWf(wFDiagram);
}
module = sol.create("sol.common.ix.functions.RestoreAcl", params);
module.process();
logger.exit("onEnterNode_RestoreAcl");
}
/**
* @member sol.common.ix.functions.RestoreAcl
* @static
* @inheritdoc sol.common.ix.FunctionBase#onExitNode
*/
function onExitNode(clInfo, userId, wFDiagram, nodeId) {
var params, module;
logger.enter("onExitNode_RestoreAcl", { flowId: wFDiagram.id, nodeId: nodeId });
params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId, "mapKey");
params.objId = wFDiagram.objId;
if (params.asAdmin) {
sol.common.WfUtils.checkMainAdminWf(wFDiagram);
}
module = sol.create("sol.common.ix.functions.RestoreAcl", params);
module.process();
logger.exit("onExitNode_RestoreAcl");
}
/**
* @member sol.common.ix.functions.RestoreAcl
* @method RF_sol_function_RestoreAcl
* @static
* @inheritdoc sol.common.ix.FunctionBase#RF_FunctionName
*/
function RF_sol_function_RestoreAcl(ec, args) {
logger.enter("RF_sol_function_RestoreAcl", args);
var params, module;
params = sol.common.ix.RfUtils.parseAndCheckParams(ec, arguments.callee.name, args, "objId", "mapKey");
if (params.asAdmin) {
sol.common.ix.RfUtils.checkMainAdminRights(ec.user, params);
}
module = sol.create("sol.common.ix.functions.RestoreAcl", params);
module.process();
logger.exit("RF_sol_function_RestoreAcl");
}